The present invention relates to a journaling file system that stores the update history of files stored on a disk drive in a storage system to prepare against a server failure.
A server that manages files stored on the disk drive of a storage system and that processes requests to access those files uses a buffer memory, a part of memory provided on the server, to reduce the number of input/output operations executed for the storage system and to reduce the response time of access requests. The server reads data from the disk drive for temporarily storing it in the buffer memory of the server and, upon receiving an access request to the file, processes the access request using data stored in the buffer memory without accessing the storage system.
The problem with this method is that, if the server fails due to a failure such as a power failure after updating data only in the buffer memory in response to an update request, the contents of the file updated in the buffer are lost. As a result, there is a possibility that an inconsistency problem will develop in the file system that is maintained by the server though the execution of the file management program. To solve this problem, some journaling file systems are introduced at the sites given below:    1 “xFS Project Architecture 10.0” at http://linuxxfs.sgi.com/projects/xfs/design_docs/xfsdocs93_pdf/arch.pdf    2 “xFS Transaction Mechanism 2.1, 4.3, 4.4, 4.5” at http://linuxxfs.sgi.com/projects/xfs/design_docs/xfsdocs93_pdf/trans.pdf    3 “The Log Manager 3.0” at http://linuxxfs.sgi.com/projects/xfs/design_docs/xfsdocs93_pdf/logpdf/log_mgr.pdf    4 “JFS overview” at ftp://www6.software.ibm.com/software/developer/library/jfs.pdf    5 “JFS log” at http://oss.software.ibm.com/developer/opensource/jfs/project/pub/jfslog/jfslog.pdf
When the server receives a file update request, the journaling file system updates data in the buffer and, at the same time, creates a journal log in which update contents are recorded. The journal log is written in the journal log storing area on the disk drive before the server returns a response to the update request to prevent the journal log from being lost even if the server fails. On the other hand, updated data in the buffer, which is managed by the journaling file system as dirty data, is written on the disk drive after the server returns a response to the update request. In the description below, updating data stored on the disk device is called flush processing. In case a failure occurs in the server, the server reads the journal log from the storage system and repairs the file system using the journal log.